<?php
App::uses('AppController', 'Controller');
App::uses('HttpSocket', 'Network/Http');
/**
 * Importacao Controller.
 *
 */
class ImportacaoController extends AppController {
	
	var $uses = array('ContaContabil', 'Produto', 'Fornecedor', 'Unidade', 'BemPatrimonial', 'Grupo') ;
	
	public function index(){
		
	}
	/**
	 *
	 * Importa as contas do sistema externo
	 * @return void
	 */
	public function importarContas($offset = null){
		if(!$offset)
			$offset = $this->params['url']['offset'];
		$this->autoRender = false;
		$httpSocket = new HttpSocket();
		$sucesso = true;
		
		$contas_resource = $httpSocket->get("http://ecampus.ufam.edu.br/ecampus/servicos/getClassificaDespesa", array("offset" => $offset));
		$contas_list = $contas_resource->body;
		$contas = array();
		if($contas_list){
			$contas = json_decode($contas_list, true);
			if(is_array($contas)){
				foreach($contas as $conta){
					$this->ContaContabil->create();
					$this->ContaContabil->save(array(
									'id' 			=> $conta['ID_CLASS_DESPESA'],
									'numero' 		=> $conta['COD_ESTRUTURADO'],
									'descricao' 	=> $conta['DESCR_DESPESA'],
									'usuarioinc'	=> 1,
									'datainc'		=> date('Y-m-d H:i:s')), false);
				}
				$this->Session->setFlash(__('Importacao realizada com sucesso!'));
			} else {
				$sucesso = false;
				Debugger::log("Erro no json");
			}
		} else {
			$this->Session->setFlash(__('Servico indisponivel no momento. Por favor, tente novamente.'));
		}	

		return json_encode(array('sucesso' => $sucesso,  'count_registros' => sizeof($contas)));
	}
	
	
/**
 *
 * Importa os grupos de produtos do sistema externo
 * @return void
 */
	public function importarGrupos($offset = null){
		if(!$offset)
			$offset = $this->params['url']['offset'];
		$this->autoRender = false;
		$httpSocket = new HttpSocket();
		$sucesso = true;
		
		$grupos_resource = $httpSocket->get("http://ecampus.ufam.edu.br/ecampus/servicos/getEstruturaProdutos", array("offset" => $offset));
		$grupos_list = $grupos_resource->body;
		$grupos = array();
		if($grupos_list){
			$grupos = json_decode($grupos_list, true);
			if(is_array($grupos)){
				foreach($grupos as $grupo){ 
					$this->Grupo->create();
					$this->Grupo->save(array(
									'id' 				=> $grupo['ID_ESTR_PRODUTO'],
									'grupo' 			=> $grupo['DESCR_ESTRUTURA'],
									'conta_contabil_id'	=> $grupo['ID_CLASS_DESPESA'],
									'vida_util'			=> 5,
									'percentual_residual'	=> 10.0,
									'usuarioinc'		=> 1,
									'datainc'			=> date('Y-m-d H:i:s')), false);
				}
				$this->Session->setFlash(__('Importacao realizada com sucesso!'));
			} else {
				$sucesso = false;
				Debugger::log("Erro no json");
			}
		} else {
			$this->Session->setFlash(__('Servico indisponivel no momento. Por favor, tente novamente.'));
		}	

		return json_encode(array('sucesso' => $sucesso,  'count_registros' => sizeof($grupos)));
	}
	
	/**
	 * 
	 * Importacao de Produtos.
	 */
	public function importarProdutos($offset = null){
		if(!$offset)
			$offset = $this->params['url']['offset'];
		$this->autoRender = false;
		$httpSocket = new HttpSocket();
		$sucesso = true;

		$resource = $httpSocket->get("http://ecampus.ufam.edu.br/ecampus/servicos/getProdutos", array("offset" => $offset));
		$produtos_list = $resource->body;
		$produtos = array();
		if($produtos_list){
			$produtos = json_decode($produtos_list, true);
			if(is_array($produtos)){
				foreach($produtos as $produto){
					$this->Produto->create();
					$this->Produto->save(array(
							'id' => $produto['ID_PRODUTO'],
							'codigo' => $produto['COD_REDUZIDO'],
							'grupo_id' => $produto['ID_ESTR_PRODUTO'],
							'descricao' => trim($produto['DESCR_PRODUTO']),
							'usuarioinc' => 1,
							'datainc' => date('Y-m-d H:i:s')), false);
				}
				$this->Session->setFlash(__('Importacao realizada com sucesso!'));
					
			} else {
				$sucesso = false;
				Debugger::log("Erro no json");
			}
		} else {
			$this->Session->setFlash(__('Servico indisponivel no momento. Por favor, tente novamente.'));
		}

		return json_encode(array('sucesso' => $sucesso,  'count_registros' => sizeof($produtos)));
	}
	
	/**
	 * 
	 * Forncecedores.
	 */
	public function importarFornecedores($offset = null){
		if(!$offset)
			$offset = $this->params['url']['offset'];
		$this->autoRender = false;
		$httpSocket = new HttpSocket();
		$sucesso = true;
		
		$fornecedores_resource = $httpSocket->get("http://ecampus.ufam.edu.br/ecampus/servicos/getFornecedores", array("offset" => $offset));
		$fornecedores_list = $fornecedores_resource->body;
		$fornecedores = array();
		if($fornecedores_list)
		{
			$fornecedores = json_decode($fornecedores_list, true);
			if(is_array($fornecedores))
			{
				foreach($fornecedores as $fornecedor){
					$this->Fornecedor->create();
					$this->Fornecedor->save(array(
								'id' 			=> $fornecedor['ID_FORNECEDOR'],
								'cnpj' 			=> $fornecedor['CGC_FORNECEDOR'],
								'razao_social' 	=> $fornecedor['NOME_FORNECEDOR'],
								'nome_fantasia' => $fornecedor['NOME_FANTASIA'],
								'usuarioinc'	=> 1,
								'datainc'		=> date('Y-m-d H:i:s')), false);
				}
				$this->Session->setFlash(__('Importação realizada com sucesso!'));
			} else {
				$sucesso = false;
				Debugger::log("Erro no json");
			}
		} else {
			$this->Session->setFlash(__('Servico indisponivel no momento. Por favor, tente novamente.'));
		}
			
		return json_encode(array('sucesso' => $sucesso,  'count_registros' => sizeof($fornecedores)));
	}

	/**
	 * Importacao de Unidades
	 * @param int $offset
	 * @return string
	 */
	public function importarUnidades($offset = null){
		if(!$offset)
			$offset = $this->params['url']['offset'];
		$this->autoRender = false;
		$httpSocket = new HttpSocket();
		$sucesso = true;

		$unidades_resource = $httpSocket->get("http://ecampus.ufam.edu.br/ecampus/servicos/getUnidades", array("offset" => $offset));
		$unidades_list = $unidades_resource->body;
		$unidades = array();
		if($unidades_list)
		{
			$unidades = json_decode($unidades_list, true);
			if(is_array($unidades))
			{
				foreach($unidades as $unidade){
					$this->Unidade->create();
					$this->Unidade->save(array(
								'id' 			=> $unidade['ID_UNIDADE'],
								'descricao' 	=> $unidade['NOME_UNIDADE'],
								'sigla' 		=> $unidade['SIGLA_UNIDADE'],
								'usuario_id_responsavel' => $unidade['ID_CHEFIA'],
								'usuarioinc'	=> 1,
								'datainc'		=> date('Y-m-d H:i:s')), false);
				}
				$this->Session->setFlash(__('Importacao realizada com sucesso!'));
			} else {
				$sucesso = false;
				Debugger::log("Erro no json");
			}
		} else {
			$this->Session->setFlash(__('Servico indisponivel no momento. Por favor, tente novamente.'));
		}

		return json_encode(array('sucesso' => $sucesso,  'count_registros' => sizeof($unidades)));
	}
	
	/**
	 * Importacao de bens patrimoniais.
	 * @param unknown_type $offset
	 */
	public function importarBensPatrimoniais($offset = null){
		//TODO: remover/aumentar tempo limite de 30s
		if(!$offset)
			$offset = $this->params['url']['offset'];
		$this->autoRender = false;
		$httpSocket = new HttpSocket();
		$sucesso = true;
		
		$resource = $httpSocket->get("http://ecampus.ufam.edu.br/ecampus/servicos/getBensPatrimoniais", array("offset" => $offset));
		$bensPatrimonials_list = $resource->body;
		$bensPatrimonials = array();
		if($bensPatrimonials_list){
			$bensPatrimonials = json_decode($bensPatrimonials_list, true);
			if(is_array($bensPatrimonials)){
				foreach($bensPatrimonials as $bemPatrimonial){
					try {
						$this->BemPatrimonial->create();
						$this->BemPatrimonial->save(array(
							'id' => $bemPatrimonial['ID_BEM'],
							'numero_bem' => $bemPatrimonial['NUM_REGISTRO'],
							'descricao_bem' => $bemPatrimonial['DESCR_BEM'],
							'caracteristica_bem' => $bemPatrimonial['CARACTERISTICA_BEM'],
							'valor_nominal' => $bemPatrimonial['VL_NOMINAL'],
							'valor_aquisicao' => $bemPatrimonial['VL_AQUISICAO'],
							'data_aquisicao' => $bemPatrimonial['DT_AQUISICAO'],
							'valor_correcao' => $bemPatrimonial['VL_CORRIGIDO'],
							'data_correcao' => $bemPatrimonial['DT_CORRECAO'],
							'data_prox_correcao' => null,
							'valor_avaliacao' => $bemPatrimonial['VL_AVALIADO'],
							'data_avaliacao' => $bemPatrimonial['DT_AVALIACAO'],
							'valor_residual' => null,
							'valor_depreciavel' => null,
							'valor_depreciacao_mes' => null,
							'valor_depreciacao_acumulada' => null,
							'tipo_bem' => $bemPatrimonial['TIPO_BEM'],
							'estadoconservacao_id' => $bemPatrimonial['ESTADO_CONS_ITEM'],
							'situacao_bem' => null,
							'data_tombamento' => $bemPatrimonial['DT_TOMBAMENTO'],
							//TODO: Incluir campo de data tomabento contabil
							'data_baixa' => $bemPatrimonial['DT_BAIXA'],
							'data_contabil_baixa' => $bemPatrimonial['DT_CONTAB_BAIXA'],
							'moeda_aqusicao' => null,
							'em_inventario' => false,
							'produto_id' => $bemPatrimonial['ID_PRODUTO'],
							'fornecedor_id' => $bemPatrimonial['ID_FORNECEDOR'],
							'fabricante_id' => $bemPatrimonial['ID_FABRICANTE'],
							'unidade_id' => $bemPatrimonial['ID_UNIDADE'],
							'marca_id' => $bemPatrimonial['ID_MARCA']
						), false);
					} catch (Exception $e) {
						continue;
					}
				}
				
				$this->Session->setFlash(__('Importacao realizada com sucesso!'));
			} else {
				$sucesso = false;
				Debugger::log("Erro no json");
			}
		} else {
			$this->Session->setFlash(__('Servico indisponivel no momento. Por favor, tente novamente.'));
		}

		return json_encode(array('sucesso' => $sucesso,  'count_registros' => sizeof($bensPatrimonials)));
	}
	
}
?>